package com.zp.self.module.level_4_算法练习.数学.数学推理;

/**
 * @author By ZengPeng
 */
public class 力扣_171_Excel表列序号 {
    //测试
    public static void main(String[] args) {
        System.out.println(new 力扣_171_Excel表列序号().titleToNumber("A"));
        System.out.println(new 力扣_171_Excel表列序号().titleToNumber("AB"));
        System.out.println(new 力扣_171_Excel表列序号().titleToNumber("ZY"));
        System.out.println(new 力扣_171_Excel表列序号().titleToNumber("FXSHRXW"));
    }

    /**
     * 题目：给你一个字符串 columnTitle ，表示 Excel 表格中的列名称。返回该列名称对应的列序号。
     *     A -> 1
     *     B -> 2
     *     C -> 3
     *     ...
     *     Z -> 26
     *     AA -> 27
     *     AB -> 28
     *   AZ -> 52   26 + 1*26
     * 分析：
     *      1.从后向前 (char -‘A’+1) * Math.pow(26, 1);
     *
     * 边界值注意：
     *      1.下标不会越界
     *      2.Z
     *      3.52
     **/

    public int titleToNumber(String columnTitle) {
        int index = columnTitle.length()-1,sum = 0;
        for (int i = index; i >=0; i--)
            sum += (columnTitle.charAt(i)-'A'+1) * (int)Math.pow(26,index-i);
        return sum;
    }
}
